The present invention relates generally to the processing and storage of images in digital cameras and other devices where large image files must be processed with relatively little memory, and particularly to a system and method for applying a wavelet or wavelet-like transform to a picture using a transform tile size that is much smaller than the picture and using much less working memory than would be required if the transform were applied to the entire picture at once, and without generating undesirable tile border effects.
Digital cameras typically include high speed, expensive working memory for processing image data, and non-volatile internal and/or removable storage for storing image files. Many digital cameras use removable flash memory cards for storing image files. The working memory is preferably provided on the same ASIC (application specific integrated circuit) as the image processing circuitry, and thus is very expensive. In order to accommodate large working memories, the working memory would have to be implemented on separate integrated circuits, which is highly undesirable because it substantially slows access to the memory, which would slow down the operation of the camera, would require the use of additional complex interface circuitry in both the working memory and the processor circuits, and would require more battery power.
To give a numeric example, for a digital camera that generates images of 1024xc3x971024 pixels with 24 bits of color image data per pixel, the amount of working memory required to store the entire image would be 3 megabytes (MB). Additional working storage would be required for processing the image. Given the power consumption and cost limitations associated with consumer market digital cameras, 3MB is simply not a feasible amount of working memory, at least as of 1999.
It is well known in the prior art that digital images can be processed a portion at a time, instead of all at once, thereby reducing memory requirements. For instance, the DCT transform used for JPEG compression and encoding of images is traditionally used on tiles of 8xc3x978 pixels. However, a well known problem with tiling an image for processing is that the tiling produces undesirable tile border effects. The border effects of DCT tiling in JPEG images are considered to be acceptable because the very small size of the tiles makes the tiling effect relatively unnoticeable to the human eye.
However, using very small tiles such as 8xc3x978 pixels is not practical when using wavelet or wavelet-like transforms in place of the DCT transform. Wavelet-like transforms have been shown to provide significantly better data compression than the DCT transform, and therefore using wavelet-like transforms in digital cameras would be desirable if the tiling effect can be avoided while using a moderate amount of working memory.
It is an object of the present invention to provide a digital camera that process images using a moderate amount of working memory, such as 5 or 6 KB, by transforming the image data using a wavelet-like transform with moderately sized tiles, such as tiles of 32xc3x9732 or 16xc3x9732 pixels, while at the same time avoiding the generation of undesirable tile border effects.
In summary, the present invention is a digital camera includes working memory, image processing circuitry and non-volatile memory for storing image files. The image processing circuitry applies a predefined transform, such as a wavelet-like transform, to image data received from the image capture mechanism to generated transform image data and applies a data compression method to the transform image data so as to generate an image file.
The image processing circuitry also includes image reconstruction circuitry and one or more state machines for successively applying a data decompression method and an inverse transform to a specified one of the image files so as to generate a reconstructed image suitable for display on an image viewer.
The image processing circuitry tiles a captured image, processing the tiles in a predefined order so that intermediate transform values from each tile, except the last tile, can be used when processing later tiles. The tiles are nonoverlapping portions of the image data. Each tile of image data is processing by applying a predefined sequence of transform layers to the tile of image data so as to generate successive layers of transform coefficients. In a preferred embodiment, the transform layers are successive applications of a wavelet-like decomposition transform. While each tile is processed, a predefined set of edge transform coefficients from a plurality of the transform layers are saved in memory for use while processing neighboring tiles. Further, the step of processing each tile includes applying at least a plurality of the transform layers to both transform coefficients generated by a prior transform layer and corresponding ones of the edge transform coefficients that were previously saved in memory while processing tiles neighboring the tile being processed. However, for some tiles along the edge of the image, there will be no edge transform coefficients from previously processed tiles to be used while processing the current tile.